package com.example.springboot.mapper;

import com.example.springboot.entity.ClothingRental;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

@Mapper
public interface ClothingRentalMapper {

    ClothingRental findById(String rentalId);

    List<ClothingRental> findByMerchantId(Integer merchantId);

    int decreaseQuantity(@Param("rentalId") int rentalId, @Param("quantity") int quantity);
    int updateStatus(@Param("rentalId") int rentalId, @Param("status") int status);
    int insertClothingRental(@Param("rental") ClothingRental rental);
    int updateQuantity(@Param("rentalId") Integer rentalId, @Param("quantity") Integer quantity);

    // 新增：管理员查询所有衣物
    List<ClothingRental> findAll(
            @Param("offset") int offset,
            @Param("size") int size,
            @Param("status") Integer status
    );

    // 新增：管理员查询总数
    int getTotalRentals(@Param("status") Integer status);

    // 新增：根据管理员 ID 查询下辖商家的衣物
    List<ClothingRental> findByAdminId(
            @Param("offset") int offset,
            @Param("size") int size,
            @Param("adminId") int adminId,
            @Param("status") Integer status
    );

    // 新增：根据管理员 ID 查询下辖商家的衣物总数
    int getTotalRentalsByAdminId(
            @Param("adminId") int adminId,
            @Param("status") Integer status
    );

    // 新增：检查衣物是否属于管理员下辖商家
    boolean isRentalManagedByAdmin(@Param("rentalId") Integer rentalId, @Param("adminId") Integer adminId);

    // 新增：管理员更新衣物信息
    int updateClothingRental(@Param("rental") ClothingRental rental);

    // 新增：管理员删除衣物
    int deleteById(@Param("rentalId") Integer rentalId);

    // 新增：获取管理员角色
    String findAdminRoleByUsername(@Param("username") String username);

    // 新增：获取管理员 ID
    Integer findAdminIdByUsername(@Param("username") String username);
}